Ext.define('Ssimgres.controller.Perfil', {
	extend : 'Ext.app.Controller',
	requires : ['Ext.MD5'],
	views : ['perfil.PerfilView', 'perfil.CortarImagenView', 'perfil.CargarImagenView', 'perfil.ModificarInformacionView', 'perfil.CambiarContrasenaView'],
	refs : [{
		ref : 'perfilView',
		selector : 'perfilView'
	}, {
		ref : 'cargarImagenView',
		selector : 'cargarImagenView'
	}, {
		ref : 'cortarImagenView',
		selector : 'cortarImagenView'
	}, {
		ref : 'modificarInformacionView',
		selector : 'modificarInformacionView'
	}, {
		ref : 'cambiarContrasenaView',
		selector : 'cambiarContrasenaView'
	}],
	init : function() {
		this.control({
			'cargarImagenView button[action=btnCancelarCargarImagen]' : {
				click : this.btnCancelarCargarImagen
			},
			'cortarImagenView button[action=btnCancelarCortarImagen]' : {
				click : this.btnCancelarCortarImagen
			},
			'cortarImagenView button[action=btnGuardarImagen]' : {
				click : this.btnGuardarImagen
			},
			'modificarInformacionView button[action=btnCancelarModificarInformacion]' : {
				click : this.btnCancelarModificarInformacion
			},
			'cambiarContrasenaView button[action=btnCancelarCambiarContrasena]' : {
				click : this.btnCancelarCambiarContrasena
			},
			'modificarInformacionView button[action=btnGuardarInformacion]' : {
				click : this.guardarInformacion
			},
			'cambiarContrasenaView button[action=btnGuardarContrasena]' : {
				click : this.guardarContrasena
			},
			'cargarImagenView button[action=btnCargarImagen]' : {
				click : this.btnCargarImagen
			},
			'perfilView' : {
				afterrender : function() {
					Ext.get('perfilCambiarImagen').on('click', this.perfilCambiarImagen, this);
					Ext.get('perfilModificarInformacion').on('click', this.perfilModificarInformacion, this);
					Ext.get('perfilCambiarContrasena').on('click', this.perfilCambiarContrasena, this);
				}
			}
		});
	},
	guardarContrasena : function() {
		var form = this.getCambiarContrasenaView().down('form').getForm();
		var clave = form.findField("clave");
		var clave_nueva = form.findField("clave_nueva");
		var clave_nueva2 = form.findField("clave_nueva2");

		if (form.isValid()) {
			if (clave_nueva.getValue() != clave_nueva2.getValue()) {
				Ext.Msg.show({
					title : 'Atención',
					msg : 'Las contrseñas deben ser iguales',
					buttons : Ext.Msg.OK,
					icon : Ext.Msg.WARNING
				});
			} else {
				clave.setValue(Ext.MD5.encode(clave.getValue()));
				clave_nueva.setValue(Ext.MD5.encode(clave_nueva.getValue()));
				clave_nueva2.setValue(Ext.MD5.encode(clave_nueva2.getValue()));
				form.submit({
					scope : this,
					url : '/servicio_administrador/cambiar_contasena_administrador',
					waitMsg : 'Cambiando contraseña...',
					success : function(form, action) {
						clave.setValue();
						clave_nueva.setValue();
						clave_nueva2.setValue();
						Ext.Msg.show({
							title : 'Éxito',
							msg : 'Contreseña guardada',
							buttons : Ext.Msg.OK,
							icon : Ext.Msg.INFO
						});
						this.getCambiarContrasenaView().close();
					},
					failure : function(form, action) {
						clave.setValue();
						clave_nueva.setValue();
						clave_nueva2.setValue();
						Ext.Msg.show({
							title : 'Error',
							msg : action.result.msg,
							buttons : Ext.Msg.OK,
							icon : Ext.Msg.ERROR
						});
					}
				});
			}
		} else {
			Ext.Msg.show({
				title : 'Atención',
				msg : 'Verifica los campos del formulario, las contrseñas deben <br/> ser mayores o iguales a 6 dígitos',
				buttons : Ext.Msg.OK,
				icon : Ext.Msg.WARNING
			});
		}
	},
	perfilCambiarContrasena : function() {
		Ext.widget('cambiarContrasenaView').show();
	},
	btnCancelarModificarInformacion : function() {
		this.getModificarInformacionView().close();
	},
	btnCancelarCambiarContrasena : function() {
		this.getCambiarContrasenaView().close();
	},
	btnCancelarCargarImagen : function() {
		this.getCargarImagenView().close();
	},
	btnCancelarCortarImagen : function() {
		this.getCortarImagenView().close();
	},
	btnGuardarImagen : function() {
		Ext.Ajax.request({
			url : '/servicio_administrador/guardar_imagen',
			method : 'post',
			params : {
				img_temp_id : this.getCortarImagenView().img_temp_id,
				x : this.getCortarImagenView().cropData.x,
				y : this.getCortarImagenView().cropData.y,
				width : this.getCortarImagenView().cropData.width,
				height : this.getCortarImagenView().cropData.height
			},
			success : function(response) {
				var respuesta = Ext.JSON.decode(response.responseText);
				if (respuesta.success) {
					window.location = '/admin';
				} else {
					Ext.Msg.show({
						title : 'Error',
						msg : respuesta.msg,
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.ERROR
					});
				}
			},
			scope : this
		});

	},
	perfilCambiarImagen : function() {
		Ext.widget('cargarImagenView').show();
	},
	perfilModificarInformacion : function() {
		Ext.widget('modificarInformacionView').show();
		var form = this.getModificarInformacionView().down('form').getForm();
		form.loadRecord(window.sesion_actual);
	},
	btnCargarImagen : function() {
		var form = this.getCargarImagenView().down('form').getForm();
		var nombreImg = form.findField("imagen").getValue();
		var ext = nombreImg.substring(nombreImg.lastIndexOf('.') + 1).toLowerCase();

		if (form.isValid()) {
			if (nombreImg != '' && ext != 'png' && ext != 'jpg' && ext != 'gif') {
				Ext.Msg.show({
					title : 'Atención',
					msg : 'Formato de archivo no soportado',
					buttons : Ext.Msg.OK,
					icon : Ext.Msg.WARNING
				});
			} else {
				form.submit({
					scope : this,
					url : '/servicio_img_temp/guardar',
					waitMsg : 'Cargando imagen...',
					success : function(form, action) {
						this.getCargarImagenView().close();
						Ext.widget('cortarImagenView', {
							imageUrl : '/servicio_img_temp/img/' + action.result.img_temp_id,
							img_temp_id : action.result.img_temp_id
						}).show();
					},
					failure : function(form, action) {
						Ext.Msg.show({
							title : 'Error',
							msg : action.result.msg,
							buttons : Ext.Msg.OK,
							icon : Ext.Msg.ERROR
						});
					}
				});
			}
		} else {
			Ext.Msg.show({
				title : 'Atención',
				msg : 'Debe seleccionar una imagen',
				buttons : Ext.Msg.OK,
				icon : Ext.Msg.WARNING
			});
		}
	},
	guardarInformacion : function() {
		var form = this.getModificarInformacionView().down('form').getForm();
		if (form.isValid()) {
			form.submit({
				url : '/servicio_administrador/modificar_datos_administrador',
				waitMsg : 'Modificando información...',
				success : function(form, action) {
					window.location = '/admin';
				},
				failure : function(form, action) {
					Ext.Msg.show({
						title : 'Error',
						msg : action.result.msg,
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.ERROR
					});
				}
			});
		} else {
			Ext.Msg.show({
				title : 'Atención',
				msg : 'Verifica los campos del formulario',
				buttons : Ext.Msg.OK,
				icon : Ext.Msg.WARNING
			});
		}
	}
});
